class Person:
    def setName(self,name):
        self.name=name
    def getName(self):
        return self.name
    #方法私有化：加了两个下划线后，外部就无法调用了
    def __sayHello(self):
        print("hello,"+self.name)

p=Person()
p.setName("老刘")
print(p.getName())
p.setName("刘金玉")
print(p.getName())
#直接修改，此时类的属性name是开放的，可以被外部直接修改

p.name="老张"
print(p.getName())
#直接读取类的属性
print(p.name)

#用这种方法是无法调用私有方法了
#p.sayHello()
#但是用这种可以调用私有方法了,固定写法，原因详见截图
p._Person__sayHello()

#inspect注入，可以看到私有方法
import inspect
methods=inspect.getmembers(p,predicate=inspect.ismethod)

print(methods)